home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / dsp / dspgroup / fltgpt10.arc / ADD.ASM next >
Encoding:
Assembly Source File  |  1986-08-19  |  16.5 KB  |  1,075 lines

  1. *****************************************************************
  2. *
  3. *    THIS IS A FLOATING POINT ADDITION ROUTINE WHICH
  4. *    IMPLEMENTS THE IEEE PROPOSED FLOATING POINT FORMAT
  5. *    ON THE TMS32010.
  6. *
  7. ******************************************************************
  8. *
  9. *    INITIAL FORMAT (ALL 16 BIT WORDS)
  10. *    ------------------
  11. *    | ALL 0 OR ALL 1 |       ASIGN (0 OR -1)
  12. *    ------------------
  13. *
  14. *    ------------------
  15. *    |0|.   15 BITS   |       AHI (NORMALIZED)
  16. *    ------------------
  17. *
  18. *    ------------------
  19. *    |0|  9 BITS |--0-|       ALO
  20. *    ------------------
  21. *
  22. *    ------------------
  23. *    |              |       AEXP (-127 TO 128)
  24. *    ------------------
  25. *
  26. *    TO HAVE THIS CORRESPOND TO IEEE FORMAT, INPUT
  27. *    0.1F * 2 ** (E + 1)
  28. *    INSTEAD OF 1.F * 2 ** E AND SUBTRACT 127 FROM E.
  29. *
  30. *    THE FINAL FORMAT IS THE SAME AS THE INITIAL FORMAT
  31. *    EXCEPT THAT FOR CLO WE HAVE:
  32. *
  33. *    -----------------
  34. *    |      16 BITS    |          CLO
  35. *    -----------------
  36. *
  37. *    ALL 16 BITS OF CLO ARE VALID.  ANYTHING PAST THESE
  38. *    HAS BEEN TRUNCATED.
  39. *
  40. ******************************************************************
  41. *
  42. *    WORST CASE (EXCLUDING INITIALIZATION AND I/O):
  43. *    17.2 MICROSECONDS.
  44. *    THIS FIGURE INCLUDES THE NORMALIZATION.
  45. *    WORDS OF PROGRAM MEMORY: 768
  46. *
  47. *******************************************************************
  48. *
  49.     IDT 'IEEEADD'
  50.     DORG 0
  51. *
  52. AEXP BSS 1
  53. AHI BSS 1
  54. ALO BSS 1
  55. ASIGN BSS 1
  56. BEXP BSS 1
  57. BHI BSS 1
  58. BLO BSS 1
  59. BSIGN BSS 1
  60. CEXP BSS 1
  61. CHI BSS 1
  62. CLO BSS 1
  63. CSIGN BSS 1
  64. C11 BSS 1
  65. C12 BSS 1
  66. C21 BSS 1
  67. C22 BSS 1
  68. C31 BSS 1
  69. C32 BSS 1
  70. C33 BSS 1
  71. C34 BSS 1
  72. C23 BSS 1
  73. C24 BSS 1
  74. C35 BSS 1
  75. C36 BSS 1
  76. C37 BSS 1
  77. C38 BSS 1
  78. CTEMP BSS 1
  79. D BSS 1
  80. SHIFT1 BSS 1
  81. SHIFT2 BSS 1
  82. AHITL BSS 1
  83. BHITL BSS 1
  84. N1 BSS 1
  85. N2 BSS 1
  86. N3 BSS 1
  87. N4 BSS 1
  88. N5 BSS 1
  89. N6 BSS 1
  90. N7 BSS 1
  91. N8 BSS 1
  92. N9 BSS 1
  93. N10 BSS 1
  94. N11 BSS 1
  95. N12 BSS 1
  96. N13 BSS 1
  97. N14 BSS 1
  98. N15 BSS 1
  99. N16 BSS 1
  100. N17 BSS 1
  101. N18 BSS 1
  102. N19 BSS 1
  103. N20 BSS 1
  104. N21 BSS 1
  105. N22 BSS 1
  106. N23 BSS 1
  107. N24 BSS 1
  108. N25 BSS 1
  109. N26 BSS 1
  110. N27 BSS 1
  111. N28 BSS 1
  112. N29 BSS 1
  113. N30 BSS 1
  114. ONE BSS 1
  115. TWO BSS 1
  116. FIFTEN BSS 1
  117. SIXTEN BSS 1
  118. M0002 BSS 1
  119. M0003 BSS 1
  120. M000F BSS 1
  121. M001F BSS 1
  122. M007F BSS 1
  123. M00FF BSS 1
  124. M01FF BSS 1
  125. M03FF BSS 1
  126. M07FF BSS 1
  127. M0FFF BSS 1
  128. M1FFF BSS 1
  129. M3FFF BSS 1
  130. M7FFF BSS 1
  131. M8000 BSS 1
  132. OS BSS 1
  133. *
  134. *
  135. *     BEGIN THE PROGRAM SEGMENT *
  136. *
  137.       AORG >0
  138. *
  139.       B START
  140. *
  141. SHIFTS      DATA 2
  142.       DATA 4
  143.       DATA 8
  144.       DATA 16
  145.       DATA 32
  146.       DATA 64
  147.       DATA 128
  148.       DATA 256
  149.       DATA 512
  150.       DATA 1024
  151.       DATA 2048
  152.       DATA 4096
  153.       DATA 8192
  154.       DATA 16384
  155.       DATA 32768
  156. *
  157. *            * A LITTLE INITIALIZATION *
  158. START      LDPK 0
  159.       LACK 1
  160.       SACL ONE
  161.       LARK AR0,N1
  162.       LARK AR1,29
  163.       ZAC
  164. LOOP      SUB ONE
  165.       LARP AR0
  166.       SACL *+,0,AR1
  167.       BANZ LOOP
  168.       LACK 2
  169.       SACL M0002
  170.       SACL TWO
  171.       LACK 3
  172.       SACL M0003
  173.       LACK 15
  174.       SACL M000F
  175.       SACL FIFTEN
  176.       LACK 16
  177.       SACL SIXTEN
  178.       LACK 31
  179.       SACL M001F
  180.       LACK 127
  181.       SACL M007F
  182.       LAC M000F,4
  183.       ADD M000F
  184.       SACL M00FF
  185.       ADD ONE,8
  186.       SACL M01FF
  187.       ADD ONE,9
  188.       SACL M03FF
  189.       ADD ONE,10
  190.       SACL M07FF
  191.       ADD ONE,11
  192.       SACL M0FFF
  193.       ADD ONE,12
  194.       SACL M1FFF
  195.       ADD ONE,13
  196.       SACL M3FFF
  197.       ADD ONE,14
  198.       SACL M7FFF
  199.       LAC ONE,15
  200.       SACL M8000
  201.       LT ONE
  202.       MPYK SHIFTS
  203.       PAC
  204.       SACL OS
  205. *
  206. *                  * FINISHED INITIALIZATION *
  207. *
  208.       IN ASIGN,PA0
  209.       IN AEXP,PA0
  210.       IN AHI,PA0
  211.       IN ALO,PA0
  212.       IN BSIGN,PA0
  213.       IN BEXP,PA0
  214.       IN BHI,PA0
  215.       IN BLO,PA0
  216. *
  217.       LAC AEXP
  218.       SUB BEXP
  219.       BLZ ALTB     * BRANCH IF AEXP < BEXP *
  220. *
  221.       BZ AEQB     * BRANCH IF AEXP = BEXP *
  222. *
  223.       SACL D     * D IS THE RIGHT SHIFT NEEDED FOR B *
  224. *
  225.       LAC AEXP
  226.       SACL CEXP     * THE EXP FOR THE RESULT IS AEXP *
  227. *
  228. AGTB      LAC FIFTEN     * A > B SO SHIFT B TO THE RIGHT D *
  229.       SUB D
  230.       BLEZ BHIZER     * IF D >= 15 BHI IS ZERO *
  231. *
  232.       ADD OS     -----------------
  233.       TBLR SHIFT1     |0|   15 BITS     |   BHI
  234. *             -----------------
  235. *             ----------------
  236. *             |0| 8 BITS |     |   BLO
  237. *             -----------------
  238.       LT BHI         || IS
  239.       MPY SHIFT1         || CHANGED
  240.       PAC             VV TO
  241.       ABS             VV
  242.       SACH BHI         VV
  243.       SACL BHITL     -----------------
  244. *             | -0- | 15-D     |   BHI
  245.       LT BLO     -----------------
  246.       MPY SHIFT1     -----------------
  247.       PAC         | D |     16-D     |   BLO
  248.       APAC         -----------------
  249.       ABS
  250.       ADDH BHITL
  251.       SACH BLO
  252.       LAC ALO,1
  253.       SACL ALO
  254. *
  255.       B DUN      * FINISHED SHIFT OF B BY D TO THE RIGHT *
  256. *
  257. BHIZER      ADD ONE     * IF D >= 16 BLO LOSES BITS *
  258.       BLEZ BLOLUZ
  259. *             * WE ONLY GET HERE IF D = 15 *
  260. *             ------------------
  261. *             |0|   15 BITS      |  BHI
  262.       LAC BLO,2     ------------------
  263.       SACH BLO     ------------------
  264.       ZALS BLO     |0| 8 BITS |      |  BLO
  265.       ADD BHI,1     ------------------
  266.       SACL BLO         ||
  267.       ZAC             VV
  268.       SACL BHI     ------------------
  269. *             |     -0-      |  BHI
  270. *             ------------------
  271. *             ------------------
  272. *             |    15 BITS    |?|  BLO
  273. *             ------------------
  274.       LAC ALO,1
  275.       SACL ALO
  276. *
  277.       B DUN      * FINISHED SHIFT OF B BY D TO THE RIGHT *
  278. *
  279. BLOLUZ      BZ SHB16
  280.       ADD FIFTEN
  281.       BLEZ BZERO     IF D >= 31, THEN B IS ZERO.
  282. *             ------------------
  283.       ADD OS     |0|  15 BITS      |  BHI
  284.       TBLR SHIFT1     ------------------
  285. *             ------------------
  286.       LT BHI     |0| 8 BITS |      |  BLO
  287.       MPY SHIFT1     ------------------
  288.       PAC             ||
  289.       ABS             VV
  290.       SACH BLO         VV
  291.       ZAC         ------------------
  292.       SACL BHI     |0|  ---0---      |  BHI
  293. *             ------------------
  294. *             ------------------
  295. *             | --0--  | 31 - D|  BLO
  296. *             ------------------
  297.       LAC ALO,1
  298.       SACL ALO
  299. *
  300.       B DUN
  301. *
  302. SHB16      LAC BHI
  303.       SACL BLO
  304.       ZAC
  305.       SACL BHI
  306. *
  307.       LAC ALO,1
  308.       SACL ALO
  309. *
  310.       B DUN
  311. *
  312. ALTB      ABS         * TO SEE WHAT IS GOING ON LOOK AT
  313. *               THE PREVIOUS CASE FOR AGTB *
  314.       SACL D
  315. *
  316.       LAC BEXP
  317.       SACL CEXP
  318. *
  319.       LAC FIFTEN
  320.       SUB D
  321.       BLEZ AHIZER
  322. *
  323.       ADD OS
  324.       TBLR SHIFT1
  325. *
  326.       LT AHI
  327.       MPY SHIFT1
  328.       PAC
  329.       ABS
  330.       SACH AHI
  331.       SACL AHITL
  332. *
  333.       LT ALO
  334.       MPY SHIFT1
  335.       PAC
  336.       APAC
  337.       ABS
  338.       ADDH AHITL
  339.       SACH ALO
  340.       LAC BLO,1
  341.       SACL BLO
  342. *
  343.       B DUN
  344. *
  345. AHIZER      ADD ONE
  346.       BLEZ ALOLUZ
  347. *
  348.       LAC ALO,2
  349.       SACH ALO
  350.       LAC ALO
  351.       ADD AHI,1
  352.       SACL ALO
  353.       ZAC
  354.       SACL AHI
  355.       LAC BLO,1
  356.       SACL BLO
  357. *
  358.       B DUN
  359. *
  360. ALOLUZ      BZ SHA16
  361.       ADD FIFTEN
  362.       BLEZ AZERO
  363. *
  364.       ADD OS
  365.       TBLR SHIFT1
  366. *
  367.       LT AHI
  368.       MPY SHIFT1
  369.       PAC
  370.       ABS
  371.       SACH ALO
  372.       ZAC
  373.       SACL AHI
  374.       LAC BLO,1
  375.       SACL BLO
  376. *
  377.       B DUN
  378. *
  379. SHA16      LAC AHI
  380.       SACL ALO
  381.       ZAC
  382.       SACL AHI
  383. *
  384.       LAC BLO,1
  385.       SACL BLO
  386. *
  387.       B DUN
  388. *
  389. AZERO      LAC BHI
  390.       SACL CHI
  391.       LAC BEXP
  392.       SACL CEXP
  393.       LAC BLO,1
  394.       SACL CLO
  395.       LAC BSIGN
  396.       SACL CSIGN
  397.       B OUTPUT
  398. *
  399. BZERO      LAC AHI
  400.       SACL CHI
  401.       LAC AEXP
  402.       SACL CEXP
  403.       LAC ALO,1
  404.       SACL CLO
  405.       LAC ASIGN
  406.       SACL CSIGN
  407.       B OUTPUT
  408. *
  409. AEQB      LAC ALO,1
  410.       SACL ALO
  411.       LAC BLO,1
  412.       SACL BLO
  413.       LAC AEXP
  414.       SACL CEXP
  415. *
  416. *             * GO TO DUN *
  417. *
  418. DUN      LAC ASIGN
  419.       SUB BSIGN
  420.       BNZ DIFSIN     * BRANCH IF THERE IS A SIGN DIFFERENCE *
  421. *
  422.       ZALH AHI
  423.       ADDS ALO
  424.       ADDS BLO
  425.       ADDH BHI     -----------------
  426. *             |0|  15 BITS     |   CHI
  427.       SACH CHI     -----------------
  428.       SACL CLO     -----------------
  429.       BZ CZERO     |     16 BITS     |   CLO
  430. *             -----------------
  431. *
  432.       BGEZ NOOV     * CHECKING FOR OVERFLOW DUE TO ADD *
  433. *
  434.       LAC CHI,15     * SHIFT TO RIGHT ONE TO CANCEL OVERFLOW *
  435.       SACH CHI
  436.       SACL CTEMP
  437. *
  438.       LAC CHI
  439.       AND M7FFF     * CANCEL SIGN EXTENSION *
  440.       SACL CHI
  441. *
  442.       LAC CLO,15
  443.       SACH CLO
  444.       LAC CLO
  445.       AND M7FFF     * CANCEL SIGN EXTENSION *
  446.       ADDS CTEMP
  447.       SACL CLO
  448. *
  449.       LAC CEXP
  450.       ADD ONE     * DUE TO RIGHT SHIFT *
  451.       SACL CEXP
  452. *
  453.       LAC ASIGN
  454.       SACL CSIGN
  455. *
  456.       B OUTPUT     * FINISHED RIGHT SHIFT *
  457. *
  458. NOOV      LAC ASIGN
  459.       SACL CSIGN
  460. *
  461.       B NORM
  462. *
  463. DIFSIN      BLZ CHAS     * IF < 0 DO (B - A) *
  464. *
  465. CHBS      ZALH AHI     * DO (|A| - |B|) SINCE B < 0 AND A > 0 *
  466.       ADDS ALO
  467.       SUBS BLO
  468.       SUBH BHI
  469. *
  470.       BZ CZERO
  471.       BLZ CNEG
  472. *
  473.       SACH CHI
  474.       SACL CLO
  475. *
  476.       ZAC
  477.       SACL CSIGN
  478. *
  479.       B NORM
  480. *
  481. CHAS      ZALH BHI       * DO (|B| - |A|) SINCE A < 0 AND B > 0 *
  482.       ADDS BLO
  483.       SUBS ALO
  484.       SUBH AHI
  485. *
  486.       BZ CZERO
  487.       BLZ CNEG
  488. *
  489.       SACH CHI
  490.       SACL CLO
  491. *
  492.       ZAC
  493.       SACL CSIGN
  494. *
  495.       B NORM
  496. *
  497. CZERO      ZAC
  498.       SACL CEXP
  499.       SACL CHI
  500.       SACL CLO
  501.       SACL CSIGN
  502.       B OUTPUT
  503. *
  504. CNEG      ABS
  505.       SACH CHI
  506.       SACL CLO
  507.       LAC N1
  508.       SACL CSIGN
  509. *
  510. *             * GO TO NORM *
  511. *
  512. *
  513. *****************************************************************
  514. *
  515. *    NORM DOES THE NORMALIZATION.  THAT IS TO SAY THAT IT
  516. *    FINDS THE MSB OF CHI AND CLO.  IN THIS CASE THE MSB WILL
  517. *    BE THE FIRST ONE (1) FOUND.  THE SEARCH FOR THIS SPECIAL
  518. *    ONE IS DONE WITH A BINARY SEARCH.    THE NOTATION USED
  519. *    IS SUMMARIZED HERE:
  520. *
  521. *
  522. *    |------------------- 16 BITS -------------------|
  523. *
  524. *    -------------------------------------------------
  525. *    |            CHI OR CLO             |        CHI OR CLO
  526. *    -------------------------------------------------
  527. *    -------------------------------------------------
  528. *    |        C11         I        C12         |        8 BITS EACH
  529. *    -------------------------------------------------
  530. *    -------------------------------------------------
  531. *    |      C21     I    C22    |      C23     I    C24    |        4 BITS EACH
  532. *    -------------------------------------------------
  533. *    -------------------------------------------------
  534. *    | C31 I C32 | C33 I C34 | C35 I C36 | C37 I C38 |        2 BITS EACH
  535. *    -------------------------------------------------
  536. *    -------------------------------------------------
  537. *    |    |  |  |  |  |  |  |  |    |  |  |  |  |  |  |  |        1 BIT EACH
  538. *    -------------------------------------------------
  539. *
  540. *    THE I'S REPRESENT THE BOUNDARY BETWEEN THE ACC HIGH BITS
  541. *    AND THE ACC LOW BITS WHEN THE HIGHER LEVEL IS LOADED INTO
  542. *    THE ACC WITH THE NECESSARY SHIFT TO SPLIT BY A FACTOR OF
  543. *    TWO.
  544. *    WORST CASE: 6.4 MICROSECONDS.
  545. *
  546. ******************************************************************
  547. NORM      LAC CHI,8
  548.       BZ CLOB     * BRANCH IF MSB IS IN CLO *
  549. *
  550.       SACH C11     * SPLIT THE 16 BIT WORD INTO TWO
  551.       SACL C12       8 BIT WORDS *
  552. *
  553.       LAC C11,12
  554.       BZ C12B     * IF THERE IS A ONE IN C11 IT WILL
  555. *               BE NONZERO *
  556.       SACH C21
  557.       SACL C22
  558. *
  559.       LAC C21,14
  560.       BZ C22B     * IF THERE IS A ONE ETC. *
  561. *
  562.       SACH C31
  563.       SACL C32
  564. *
  565.       LAC C31
  566.       BZ C32B     * IF THERE IS A ONE ETC. *
  567. *
  568.       B OUTPUT     * THE MSB CANNOT BE IN BIT ONE BECAUSE THIS
  569. *               WAS HANDLED EARLIER *
  570. C32B      LAC C32
  571.       AND M8000
  572.       BZ MSB4     * MSB# MEANS THE MSB IS IN BIT # FROM LEFT
  573. *               TO RIGHT *
  574. *
  575.       LAC N1     * LEFT SHIFT OF 1 *
  576.       ADD CEXP
  577.       SACL CEXP
  578. *
  579.       ZALH CHI
  580.       ADDS CLO
  581.       ADDH CHI
  582.       ADDS CLO
  583.       SACH CHI
  584.       SACL CLO
  585. *
  586.       B OUTPUT
  587. *
  588. MSB4      LAC N2     * LEFT SHIFT OF 2 *
  589.       ADD CEXP
  590.       SACL CEXP
  591. *
  592.       LAC CLO,2
  593.       SACL CLO
  594.       SACH CTEMP
  595.       LAC CTEMP
  596.       AND M0003
  597.       ADD CHI,2
  598.       SACL CHI
  599. *
  600.       B OUTPUT
  601. *
  602. C22B      LAC C22,2
  603.       SACH C33
  604.       SACL C34
  605. *
  606.       LAC C33
  607.       BZ C34B     * BRANCH IF NO ONE *
  608. *
  609.       AND M0002
  610.       BZ MSB6
  611. *
  612.       LAC N3     * LEFT SHIFT OF THREE *
  613.       ADD CEXP
  614.       SACL CEXP
  615.       LAC CLO,3
  616.       SACL CLO
  617.       SACH CTEMP
  618.       LAC CTEMP
  619.       AND M000F
  620.       ADD CHI,3
  621.       SACL CHI
  622. *
  623.       B OUTPUT
  624. *
  625. MSB6      LAC N4     * LEFT SHIFT OF 4 *
  626.       ADD CEXP
  627.       SACL CEXP
  628. *
  629.       LAC CLO,4
  630.       SACL CLO
  631.       SACH CTEMP
  632.       LAC CTEMP
  633.       AND M000F
  634.       ADD CHI,4
  635.       SACL CHI
  636. *
  637.       B OUTPUT
  638. *
  639. C34B      LAC C34
  640. *
  641.       AND M8000
  642.       BZ MSB8
  643. *
  644.       LAC N5     * LEFT SHIFT OF 5 *
  645.       ADD CEXP
  646.       SACL CEXP
  647. *
  648.       LAC CLO,5
  649.       SACL CLO
  650.       SACH CTEMP
  651.       LAC CTEMP
  652.       AND M001F
  653.       ADD CHI,5
  654.       SACL CHI
  655. *
  656.       B OUTPUT
  657. *
  658. MSB8      LAC N6     * LEFT SHIFT OF 6 *
  659.       ADD CEXP
  660.       SACL CEXP
  661. *
  662.       LAC CLO,6
  663.       SACL CLO
  664.       SACH CTEMP
  665.       LAC CTEMP
  666.       AND M001F
  667.       ADD CHI,6
  668.       SACL CHI
  669. *
  670.       B OUTPUT     * ^^ COMPLETES TOP 8 BITS ^^ *
  671. *
  672. C12B      LAC C12,4
  673.       SACH C23
  674.       SACL C24
  675. *
  676.       LAC C23,14
  677.       BZ C24B
  678. *
  679.       SACH C35
  680.       SACL C36
  681. *
  682.       LAC C35
  683.       BZ C36B
  684. *
  685.       AND M0002
  686.       BZ MSB10
  687. *
  688.       LAC N7     * LEFT SHIFT OF 7 *
  689.       ADD CEXP
  690.       SACL CEXP
  691. *
  692.       LAC CLO,7
  693.       SACL CLO
  694.       SACH CTEMP
  695.       LAC CTEMP
  696.       AND M007F
  697.       ADD CHI,7
  698.       SACL CHI
  699. *
  700.       B OUTPUT
  701. *
  702. MSB10      LAC N8     * LEFT SHIFT OF 8 *
  703.       ADD CEXP
  704.       SACL CEXP
  705. *
  706.       LAC CLO,8
  707.       SACL CLO
  708.       SACH CTEMP
  709.       LAC CTEMP
  710.       AND M00FF
  711.       ADD CHI,8
  712.       SACL CHI
  713.       B OUTPUT
  714. *
  715. C36B      LAC C36
  716.       AND M8000
  717.       BZ MSB12
  718.  
  719.       LAC N9     * LEFT SHIFT OF 9 *
  720.       ADD CEXP
  721.       SACL CEXP
  722.       LAC CLO,9
  723.       SACL CLO
  724.       SACH CTEMP
  725.       LAC CTEMP
  726.       AND M01FF
  727.       ADD CHI,9
  728.       SACL CHI
  729. *
  730.       B OUTPUT
  731. *
  732. MSB12      LAC N10     * LEFT SHIFT OF 10 *
  733.       ADD CEXP
  734.       SACL CEXP
  735. *
  736.       LAC CLO,10
  737.       SACL CLO
  738.       SACH CTEMP
  739.       LAC CTEMP
  740.       AND M03FF
  741.       ADD CHI,10
  742.       SACL CHI
  743. *
  744.       B OUTPUT
  745. *
  746. C24B      LAC C24,2
  747.       SACH C37
  748.       SACL C38
  749. *
  750.       LAC C37
  751.       BZ C38B
  752. *
  753.       AND M0002
  754.       BZ MSB14
  755. *
  756.       LAC N11     * LEFT SHIFT OF 11 *
  757.       ADD CEXP
  758.       SACL CEXP
  759. *
  760.       LAC CLO,11
  761.       SACL CLO
  762.       SACH CTEMP
  763.       LAC CTEMP
  764.       AND M07FF
  765.       ADD CHI,11
  766.       SACL CHI
  767. *
  768.       B OUTPUT
  769. *
  770. MSB14      LAC N12     * LEFT SHIFT OF 12 *
  771.       ADD CEXP
  772.       SACL CEXP
  773. *
  774.       LAC CLO,12
  775.       SACL CLO
  776.       SACH CTEMP
  777.       LAC CTEMP
  778.       AND M0FFF
  779.       ADD CHI,12
  780.       SACL CHI
  781. *
  782.       B OUTPUT
  783. *
  784. C38B      LAC C38
  785.       AND M8000
  786.       BZ MSB16
  787. *
  788.       LAC N13     * LEFT SHIFT OF 13 *
  789.       ADD CEXP
  790.       SACL CEXP
  791. *
  792.       LAC CLO,13
  793.       SACL CLO
  794.       SACH CTEMP
  795.       LAC CTEMP
  796.       AND M1FFF
  797.       ADD CHI,13
  798.       SACL CHI
  799. *
  800.       B OUTPUT
  801. *
  802. MSB16      LAC N14     * LEFT SHIFT OF 14 *
  803.       ADD CEXP
  804.       SACL CEXP
  805. *
  806.       LAC CLO,14
  807.       SACL CLO
  808.       SACH CTEMP
  809.       LAC CTEMP
  810.       AND M3FFF
  811.       ADD CHI,14
  812.       SACL CHI
  813. *
  814.       B OUTPUT
  815. *
  816. CLOB      LAC CLO,8     * CHI IS ZERO *
  817. *
  818.       SACH C11     * SPLIT THE 16 BIT WORD INTO TWO
  819.       SACL C12       8 BIT PIECES *
  820. *
  821.       LAC C11,12
  822.       BZ C12BP     * IF THERE IS A ONE ETC. *
  823. *
  824.       SACH C21
  825.       SACL C22
  826. *
  827.       LAC C21,14
  828.       BZ C22BP     * IF THERE IS A ONE ETC. *
  829. *
  830.       SACH C31
  831.       SACL C32
  832. *
  833.       LAC C31
  834.       BZ C32BP     * IF THERE IS A ONE ETC. *
  835. *
  836.       AND M0002
  837.       BZ MSB18
  838. *
  839.       LAC N15     * LEFT SHIFT OF 15 *
  840.       ADD CEXP
  841.       SACL CEXP
  842. *
  843.       LAC CLO,15
  844.       SACH CHI
  845.       SACL CLO
  846.       LAC CHI
  847.       AND M7FFF
  848.       SACL CHI
  849. *
  850.       B OUTPUT
  851. *
  852. MSB18      LAC N16     * LEFT SHIFT OF 16 *
  853.       ADD CEXP
  854.       SACL CEXP
  855. *
  856.       LAC CLO
  857.       SACL CHI
  858.       ZAC
  859.       SACL CLO
  860. *
  861.       B OUTPUT
  862. *
  863. C32BP      LAC C32
  864.       AND M8000
  865.       BZ MSB20
  866. *
  867.       LAC N17     * LEFT SHIFT OF 17 *
  868.       ADD CEXP
  869.       SACL CEXP
  870. *
  871.       LAC CLO,1
  872.       SACL CHI
  873.       ZAC
  874.       SACL CLO
  875. *
  876.       B OUTPUT
  877. *
  878. MSB20      LAC N18     * LEFT SHIFT OF 18 *
  879.       ADD CEXP
  880.       SACL CEXP
  881. *
  882.       LAC CLO,2
  883.       SACL CHI
  884.       ZAC
  885.       SACL CLO
  886. *
  887.       B OUTPUT
  888. *
  889. C22BP      LAC C22,2
  890.       SACH C33
  891.       SACL C34
  892. *
  893.       LAC C33
  894.       BZ C34BP     * BRANCH IF NO ONE *
  895. *
  896.       AND M0002
  897.       BZ MSB22
  898. *
  899.       LAC N19     * LEFT SHIFT OF 19 *
  900.       ADD CEXP
  901.       SACL CEXP
  902. *
  903.       LAC CLO,3
  904.       SACL CHI
  905.       ZAC
  906.       SACL CLO
  907. *
  908.       B OUTPUT
  909. *
  910. MSB22      LAC N20     * LEFT SHIFT OF 20 *
  911.       ADD CEXP
  912.       SACL CEXP
  913. *
  914.       LAC CLO,4
  915.       SACL CHI
  916.       ZAC
  917.       SACL CLO
  918. *
  919.       B OUTPUT
  920. *
  921. C34BP      LAC C34
  922.       AND M8000
  923.       BZ MSB24
  924. *
  925.       LAC N21     * LEFT SHIFT OF 21 *
  926.       ADD CEXP
  927.       SACL CEXP
  928. *
  929.       LAC CLO,5
  930.       SACL CHI
  931.       ZAC
  932.       SACL CLO
  933. *
  934.       B OUTPUT
  935. *
  936. MSB24      LAC N22     * LEFT SHIFT OF 22 *
  937.       ADD CEXP
  938.       SACL CEXP
  939. *
  940.       LAC CLO,6
  941.       SACL CHI
  942.       ZAC
  943.       SACL CLO
  944. *
  945.       B OUTPUT     * ^^ COMPLETES TOP 8 ^^ *
  946. *
  947. C12BP      LAC C12,4
  948.       SACH C23
  949.       SACL C24
  950. *
  951.       LAC C23,14
  952.       BZ C24BP
  953.       SACH C35
  954.       SACL C36
  955. *
  956.       LAC C35
  957.       BZ C36BP
  958. *
  959.       AND M0002
  960.       BZ MSB26
  961. *
  962.       LAC N23     * LEFT SHIFT OF 23 *
  963.       ADD CEXP
  964.       SACL CEXP
  965. *
  966.       LAC CLO,7
  967.       SACL CHI
  968.       ZAC
  969.       SACL CLO
  970. *
  971.       B OUTPUT
  972. *
  973. MSB26      LAC N24     * LEFT SHIFT OF 24 *
  974.       ADD CEXP
  975.       SACL CEXP
  976. *
  977.       LAC CLO,8
  978.       SACL CHI
  979.       ZAC
  980.       SACL CLO
  981. *
  982.       B OUTPUT
  983. *
  984. C36BP      LAC C36
  985.       AND M8000
  986.       BZ MSB28
  987. *
  988.       LAC N25     * LEFT SHIFT OF 25 *
  989.       ADD CEXP
  990.       SACL CEXP
  991.       LAC CLO,9
  992.       SACL CHI
  993.       ZAC
  994.       SACL CLO
  995. *
  996.       B OUTPUT
  997. *
  998. MSB28      LAC N26     * LEFT SHIFT OF 26 *
  999.       ADD CEXP
  1000.       SACL CEXP
  1001. *
  1002.       LAC CLO,10
  1003.       SACL CHI
  1004.       ZAC
  1005.       SACL CLO
  1006. *
  1007.       B OUTPUT
  1008. *
  1009. C24BP      LAC C24,2
  1010.       SACH C37
  1011.       SACL C38
  1012. *
  1013.       LAC C37
  1014.       BZ C38BP
  1015. *
  1016.       AND M0002
  1017.       BZ MSB30
  1018. *
  1019.       LAC N27     * LEFT SHIFT OF 27 *
  1020.       ADD CEXP
  1021.       SACL CEXP
  1022. *
  1023.       LAC CLO,11
  1024.       SACL CHI
  1025.       ZAC
  1026.       SACL CLO
  1027. *
  1028.       B OUTPUT
  1029. *
  1030. MSB30      LAC N28     * LEFT SHIFT OF 28 *
  1031.       ADD CEXP
  1032.       SACL CEXP
  1033. *
  1034.       LAC CLO,12
  1035.       SACL CHI
  1036.       ZAC
  1037.       SACL CLO
  1038. *
  1039.       B OUTPUT
  1040. *
  1041. C38BP      LAC C38
  1042.       AND M8000
  1043.       BZ MSB32
  1044. *
  1045.       LAC N29     * LEFT SHIFT OF 29 *
  1046.       ADD CEXP
  1047.       SACL CEXP
  1048. *
  1049.       LAC CLO,13
  1050.       SACL CHI
  1051.       ZAC
  1052.       SACL CLO
  1053. *
  1054.       B OUTPUT
  1055. *
  1056. MSB32      LAC N30     * LEFT SHIFT OF 30 *
  1057.       ADD CEXP     * SORRY, BUT THATS ALL THE ACC CAN HOLD *
  1058.       SACL CEXP
  1059. *
  1060.       LAC CLO,14
  1061.       SACL CHI
  1062.       ZAC
  1063.       SACL CLO
  1064. *
  1065. *
  1066. *
  1067. OUTPUT      OUT CSIGN,PA1
  1068.       OUT CEXP,PA1
  1069.       OUT CHI,PA1
  1070.       OUT CLO,PA1
  1071. *
  1072. SELF      B SELF
  1073. *
  1074.       END
  1075.